package org.dromara.demo.service;

import org.dromara.demo.domain.BusiForm;
import org.dromara.demo.domain.CargoItem;
import org.dromara.demo.domain.Contact;
import org.dromara.demo.domain.dto.BusiFormDto;
import org.dromara.demo.domain.dto.BusiFormSubmitDto;

import java.util.List;

/**
 * 业务表单服务接口
 */
public interface IBusiFormService {

    /**
     * 提交业务表单（与前端表单结构对应）
     *
     * @param busiFormSubmitDto 业务表单提交数据传输对象
     * @return 保存的业务表单实体对象
     */
    BusiForm submitBusiFormFromFrontend(BusiFormSubmitDto busiFormSubmitDto);

    /**
     * 提交业务表单
     *
     * @param busiFormDto 业务表单数据传输对象
     * @return 保存的业务表单实体对象
     */
    BusiForm submitBusiForm(BusiFormDto busiFormDto);

    /**
     * 根据ID获取业务表单
     *
     * @param id 业务表单ID
     * @return 业务表单实体对象
     */
    BusiForm getBusiFormById(Long id);

    /**
     * 获取所有业务表单
     *
     * @return 业务表单实体对象列表
     */
    List<BusiForm> getAllBusiForms();

    /**
     * 根据业务表单ID获取货物明细列表
     *
     * @param busiFormId 业务表单ID
     * @return 货物明细实体对象列表
     */
    List<CargoItem> getCargoItemsByBusiFormId(Long busiFormId);

    /**
     * 根据业务表单ID获取联系人列表
     *
     * @param busiFormId 业务表单ID
     * @return 联系人实体对象列表
     */
    List<Contact> getContactsByBusiFormId(Long busiFormId);
}